Date		:	23 aout 1991
		Protection	:	MOT DE PASSE
		Programme	:       PARIS DAKAR 90
		Outils		:	SOFT-ICE V2.50
		Fichier		:	LOADER.EXE
		Temps pass�	:	45 MINUTES
		Soci�t�		:	INFERENCE M.D.O.
		Divers	        :	D�j� essay� en INDONESIE et en FRANCE.
		Origine		:	INDONESIE
		Num�ro		:	135


	Cette protection est celle sur laquelle je me suis d�j� cass� les
	dents � plusieurs reprises. Elle imite une machine � sous dont le
	r�sultat correspond � une couleur parmi huit.
	Elle est pr�sente �galement dans les jeux GEISHA ( o� elle efface
	la table des INT ) ainsi que dans le jeu COUGAR FORCE.
	En d�roulant le soft au pas � pas on trouve le CALL qui affiche
	" WRONG CODE " en 0C83:1F5B. Le saut qui se trouve juste avant est
	imm�diatement invers� pour voir; le jeu se plante...

	Il va donc falloir �tudier la condition du saut.

	CS=0C83
	CS:1F53 3BD0		CMP	DX,AX
	CS:1F55 741A		JZ	1F71	; SI AX = DX ON SAUTE ( OK )
	CS:1F57 B8FFFF		MOV	AX,FFFF
	CS:1F5A	50		PUSH 	AX
	CS:1F5B 9A0500A32A	CALL	2AA3:0005   ; AFFICHE " WRONG CODE "

	Les instructions qui d�terminent si l'on saute ou non sont les
	suivantes:

	CS:1F42 268A07		MOV	AL,ES:[BX]	ES:558C=40 ; Valeur
					; choisie par le programme...
	CS:1F45 98		CBW		; Converti un octet en mot.
	CS:1F46 257000		AND	AX,0070	; Masque 0000 0000 0111 0000
	CS:1F49 B104		MOV	CL,04	; On charge CL avec 4
	CS:1F4B D3F8		SAR	AX,CL	; Shit Arith. Droit de CL fois.
	CS:1F4D 50		PUSH 	AX	; On sauve AX sur la pile.
	CS:1F4E A0B071		MOV	AL,[71B0] ; Valeur choisie par le joueur
					; de 0 � 7 ( TOUCHE ENFONCEE ).
	CS:1F51 98		CBW
	CS:1F52 5A		POP	DX	; Le contenu de AX va en DX.
	CS:1F53 3BD0		CMP     DX,AX   ; On compare.
	CS:1F55 741A		JZ	1F71	; Si OK on charge le jeu...

	En ES:[BX] on trouve ce que le programme y place d'une fa�on pseudo
	al�atoire et en 71b0 la valeur de 0 � 7 correspondant � la touche
	enfonc�e par le joueur. En faisant des essais avec toujours le m�me
	chiffre ( 5 - couleur bleue ) on trouve 04 en 71b0. Pour que la 
	condition AX = DX se r�alise il faut avoir �galement 0004 en AX avant 
	que le registre ne soit PUSH� sur la pile. ( DX re�oit le contenu de
	71B0 qui est 04 converti par CBW en mot de 16 bits ( 0004 ).
	Il s'agit de trouver maintenant la valeur que doit contenir ES:[BX]
	pour obtenir 0004 en AX apr�s un AND 70 et un SAR de 4.
	Pour cel� rien de plus simple que d'effectuer ces deux op�rations �
	l'envers;
	SAR de 4 devient un SAL de 4 ce qui transforme notre 0004 en 0040.
	Un AND de 70 ne change rien, il suffit donc que ES:[BX] contienne
	toujours 0040 et que 71B0 contienne 04. Ce qui permettra de cliquer
	sur n'importe quelle couleur sans affecter 71B0 et le programme lui
	pr�sentera toujours 0040 en ES:[BX].
	Pour obtenir ceci il suffit de charger ces deux positions m�moires 
	avec ces deux valeurs et de forcer le saut conditionnel afin qu'il
	�vite la routine du " WRONG CODE ".
	L'�galit� de ces deux positions doit �tre test� plus loin puisque le
	programme se 'viande' lorsque l'on ne modifie que le saut.

	Transformer le programme comme suit:

	CS:1F42 26C60740	MOV	BYTE PTR ES:[BX],40 ; On place 40 en
							    ; ES:558C.
	CS:1F46 C606B07104	MOV     BYTE PTR [71B0],04  ; On place 04 en
							    ; DS:71B0.	
	CS:1F4B EB24		JMP	1F71		    ; On saute en 1F71.

	La suite reste inchang�e, mais cel� n'a pas d'importance puisque non
	utilis�e !
	
	CS:1F4D 50		PUSH 	AX	  
	CS:1F4E A0B071		MOV	AL,[71B0] 
	CS:1F51 98		CBW
	CS:1F52 5A		POP	DX	  
	CS:1F53 3BD0		CMP     DX,AX     
	CS:1F55 741A		JZ	1F71	  

	Avec PCTOOLS chercher la chaine C41EBD71268A et modifier � partir de
	8A inclu : C60740C606B07104EB24.

	FREDDY